'use strict';

const Controller = require('egg').Controller;
const fs = require('fs');
// const path = require('path');
// const images = require('images');
const tinify = require('tinify');
tinify.key = '5b3NrHFyQ24gykF1F6DZzW5gmWgHjZNQ';
// const md5 = require('md5');

class AdminController extends Controller {

  async index() {
    const { ctx } = this;
    ctx.body = '这是admin的数据页面';
  }

  //   获取个人信息
  async getPersonalInfo() {
    const res = await this.app.mysql.select('mydetails');
    this.ctx.body = res;
  }

  //   修改个人信息
  async alertPersonalInfo() {
    //   获得前端传过来的数据
    const info = this.ctx.request.body;


    // 处理图片
    if (info.avatar) {
      const imgName = info.avatar.split('/').pop();
      let ysName = imgName.split('.');
      ysName[0] = ysName[0] + 'ys.';
      ysName = ysName.join('');

      const storageImg = new Promise((ok, no) => {
        const rs = fs.createReadStream('app/public/admin/temporary/' + imgName);
        const ws = fs.createWriteStream('app/public/admin/avatar/' + imgName);
        rs.pipe(ws);
        // 拷贝一个源文件为ys名,避免压缩失败没有ys图
        // const wsys = fs.createWriteStream('app/public/admin/avatar/' + ysName);
        // rs.pipe(wsys);

        ws.on('finish', () => {
          ok('完成');
        });
        ws.on('error', err => {
          no(err);
        });
      });

      let msg;
      try {
        msg = await storageImg;
      } catch (error) {
        msg = '存储失败:' + error;
      }
      // yzyconsole.log('存入信息:', msg);

      // 压缩图片
      // images('app/public/admin/temporary/' + imgName).save('app/public/admin/avatar/' + ysName, { quality: 20 });// 压缩比50
      try {
        tinify.fromFile('app/public/admin/temporary/' + imgName).toFile('app/public/admin/avatar/' + ysName);
      } catch (error) {
        // yzyconsole.log(error);
      }

      // 删除临时文件 删除所有的文件(将所有文件夹置空)
      // const emptyDir = function(fileUrl) {
      //   const files = fs.readdirSync(fileUrl);// 读取该文件夹
      //   files.forEach(function(file) {
      //     const stats = fs.statSync(fileUrl + '/' + file);
      //     if (stats.isDirectory()) {
      //       emptyDir(fileUrl + '/' + file);
      //     } else {
      //       fs.unlinkSync(fileUrl + '/' + file);
      //       console.log('删除文件' + fileUrl + '/' + file + '成功');
      //     }
      //   });
      // };
      // emptyDir('app/public/admin/temporary');
    }


    // 向数据库插入数据
    const result = await this.app.mysql.update('mydetails', info);
    // 判断是否成功,插入成功返回的row数
    const insertSuccess = result.affectedRows === 1;
    // 返回给前端保存信息
    this.ctx.body = {
      isScuccess: insertSuccess,
    };
  }

  //   新增文章
  async addArticle() {
    //   获得前端传过来的数据
    const tmpArticle = this.ctx.request.body;

    // 处理背景图片
    if (tmpArticle.img) {
      const imgName = tmpArticle.img.split('/').pop();
      let ysName = imgName.split('.');
      ysName[0] = ysName[0] + 'ys.';
      ysName = ysName.join('');

      const storageImg = new Promise((ok, no) => {
        const rs = fs.createReadStream('app/public/admin/temporary/' + imgName);
        const ws = fs.createWriteStream('app/public/admin/articleBgi/' + imgName);
        rs.pipe(ws);

        // 拷贝一个源文件为ys名,避免压缩失败没有ys图
        // const wsys = fs.createWriteStream('app/public/admin/articleBgi/' + ysName);
        // rs.pipe(wsys);

        ws.on('finish', () => {
          ok('完成');
        });
        ws.on('error', err => {
          no(err);
        });
      });

      let msg;
      try {
        msg = await storageImg;
      } catch (error) {
        msg = '存储失败:' + error;
      }
      // yzyconsole.log('存入信息:', msg);

      // 压缩图片
      // images('app/public/admin/temporary/' + imgName).save('app/public/admin/articleBgi/' + ysName, { quality: 20 });// 压缩比50

      try {
        tinify.fromFile('app/public/admin/temporary/' + imgName).toFile('app/public/admin/articleBgi/' + ysName);
      } catch (error) {
        // yzyconsole.log(error);
      }

      // 删除临时文件 删除所有的文件(将所有文件夹置空)
      // const emptyDir = function(fileUrl) {
      //   const files = fs.readdirSync(fileUrl);// 读取该文件夹
      //   files.forEach(function(file) {
      //     const stats = fs.statSync(fileUrl + '/' + file);
      //     if (stats.isDirectory()) {
      //       emptyDir(fileUrl + '/' + file);
      //     } else {
      //       fs.unlinkSync(fileUrl + '/' + file);
      //       console.log('删除文件' + fileUrl + '/' + file + '成功');
      //     }
      //   });
      // };
      // emptyDir('app/public/admin/temporary');
    }

    // 处理内容图片
    if (tmpArticle.contentImg) {
      tmpArticle.contentImg.split(',').forEach(async i => {

        const imgName = i.split('/').pop();
        let ysName = imgName.split('.');
        ysName[0] = ysName[0] + 'ys.';
        ysName = ysName.join('');

        const storageImg = new Promise((ok, no) => {
          const rs = fs.createReadStream('app/public/admin/temporary/' + imgName);
          const ws = fs.createWriteStream('app/public/admin/articleContentImg/' + imgName);
          rs.pipe(ws);

          // 拷贝一个源文件为ys名,避免压缩失败没有ys图
          // const wsys = fs.createWriteStream('app/public/admin/articleContentImg/' + ysName);
          // rs.pipe(wsys);

          ws.on('finish', () => {
            ok('完成');
          });
          ws.on('error', err => {
            no(err);
          });
        });

        let msg;
        try {
          msg = await storageImg;
        } catch (error) {
          msg = '存储失败:' + error;
        }
        // yzyconsole.log('存入信息:', msg);

        // 压缩图片
        // images('app/public/admin/temporary/' + imgName).save('app/public/admin/articleBgi/' + ysName, { quality: 20 });// 压缩比50

        try {
          tinify.fromFile('app/public/admin/temporary/' + imgName).toFile('app/public/admin/articleContentImg/' + ysName);
        } catch (error) {
          // yzyconsole.log(error);
        }

        // 删除临时文件 删除所有的文件(将所有文件夹置空)
        // const emptyDir = function(fileUrl) {
        //   const files = fs.readdirSync(fileUrl);// 读取该文件夹
        //   files.forEach(function(file) {
        //     const stats = fs.statSync(fileUrl + '/' + file);
        //     if (stats.isDirectory()) {
        //       emptyDir(fileUrl + '/' + file);
        //     } else {
        //       fs.unlinkSync(fileUrl + '/' + file);
        //       console.log('删除文件' + fileUrl + '/' + file + '成功');
        //     }
        //   });
        // };
        // emptyDir('app/public/admin/temporary');

      });

    }


    // 向数据库插入数据
    const result = await this.app.mysql.insert('article', tmpArticle);
    // 判断是否成功,插入成功返回的row数
    const insertSuccess = result.affectedRows === 1;
    // 保存返回修改的id
    const insertId = result.insertId;
    // 返回给前端保存信息
    this.ctx.body = {
      isScuccess: insertSuccess,
      insertId,
    };
  }

  // 获取文章列表
  async getArticleList() {
    const sql = 'SELECT article.id as id ,' +
      'article.title as title ,' +
      'article.type as type ,' +
      'article.synopsis as synopsis ,' +
      'article.img as img ,' +
      'article.isRecommend as isRecommend ,' +
      'article.people as people ,' +
      'article.alterTime as alterTime ,' +
      'article.skillTypeId as skillTypeId ,' +
      'article.updateTime as updateTime ' +
      'FROM article ' +
      'order by updateTime';
    const res = await this.app.mysql.query(sql);
    this.ctx.body = res;
  }

  // 删除文章
  async deleteArticle() {
    const id = this.ctx.params.id;

    // 删除原来的背景图片
    const getOriginalImgSql = 'SELECT article.img as img ' +
      'FROM article ' +
      'WHERE id=' + id;
    const getOriginalImgRes = (await this.app.mysql.query(getOriginalImgSql))[0].img;
    if (getOriginalImgRes) {
      // yzyconsole.log('getOriginalImgRes', getOriginalImgRes);
      const imgName1 = getOriginalImgRes.split('/').pop();
      let imgName2 = imgName1.split('.');
      imgName2[0] = imgName2[0] + 'ys.';
      imgName2 = imgName2.join('');
      try {
        fs.unlinkSync('app/public/admin/articleBgi/' + imgName1);
        fs.unlinkSync('app/public/admin/articleBgi/' + imgName2);
      } catch (error) {
        // yzyconsole.log('err', error);
      }
    }


    // 删除原来的内容图片
    const getOriginalContentImgSql = 'SELECT article.contentImg as contentImg ' +
      'FROM article ' +
      'WHERE id=' + id;
    const getOriginalContentImgRes = (await this.app.mysql.query(getOriginalContentImgSql))[0].img;
    if (getOriginalContentImgRes) {
      getOriginalContentImgRes.forEach(i => {
        // yzyconsole.log('getOriginalImgRes', i);
        const imgName1 = i.split('/').pop();
        let imgName2 = imgName1.split('.');
        imgName2[0] = imgName2[0] + 'ys.';
        imgName2 = imgName2.join('');
        try {
          fs.unlinkSync('app/public/admin/articleBgi/' + imgName1);
          fs.unlinkSync('app/public/admin/articleContentImg/' + imgName2);
        } catch (error) {
          // yzyconsole.log('err', error);
        }

      });
    }


    const res = await this.app.mysql.delete('article', { id });
    this.ctx.body = { data: res };
  }

  // 获取文章详情页
  async getArticle() {
    const id = this.ctx.params.id;

    const sql = 'SELECT article.id as id ,' +
      'article.title as title ,' +
      'article.type as type ,' +
      'article.synopsis as synopsis ,' +
      'article.img as img ,' +
      'article.isRecommend as isRecommend ,' +
      'article.people as people ,' +
      'article.skillTypeId as skillTypeId ,' +
      'article.content as content ,' +
      'article.tags as tags ,' +
      'article.contentImg as contentImg ,' +
      'article.updateTime as updateTime ' +
      'FROM article ' +
      'WHERE id=' + id;
    const res = await this.app.mysql.query(sql);

    this.ctx.body = res;
  }


  // 修改文章
  async alertArticle() {
    // console.log('this.ctx.request', this.ctx.request.body);
    //   获得前端传过来的数据
    const tmpArticle = this.ctx.request.body;

    // 删除原来的背景图片
    const getOriginalImgSql = 'SELECT article.img as img ' +
      'FROM article ' +
      'WHERE id=' + tmpArticle.id;
    const getOriginalImgRes = (await this.app.mysql.query(getOriginalImgSql))[0].img;
    if (getOriginalImgRes && (tmpArticle.img !== getOriginalImgRes)) {
      // yzyconsole.log('getOriginalImgRes', getOriginalImgRes);
      const imgName1 = getOriginalImgRes.split('/').pop();
      let imgName2 = imgName1.split('.');
      imgName2[0] = imgName2[0] + 'ys.';
      imgName2 = imgName2.join('');
      try {
        fs.unlinkSync('app/public/admin/articleBgi/' + imgName1);
        fs.unlinkSync('app/public/admin/articleBgi/' + imgName2);
      } catch (error) {
        // yzyconsole.log('err', error);
      }
    }
    // 处理背景图片
    // yzyconsole.log('tmpArticle.img', tmpArticle.img);
    if (tmpArticle.img && (tmpArticle.img !== getOriginalImgRes)) {
      // TODO:其实还有个判断:当前上传的img有没有重复上传而temporary里已经被删了
      const imgName = tmpArticle.img.split('/').pop();
      let ysName = imgName.split('.');
      ysName[0] = ysName[0] + 'ys.';
      ysName = ysName.join('');

      const storageImg = new Promise((ok, no) => {
        const rs = fs.createReadStream('app/public/admin/temporary/' + imgName);
        const ws = fs.createWriteStream('app/public/admin/articleBgi/' + imgName);
        rs.pipe(ws);

        // 拷贝一个源文件为ys名,避免压缩失败没有ys图
        // const wsys = fs.createWriteStream('app/public/admin/articleBgi/' + ysName);
        // rs.pipe(wsys);

        ws.on('finish', () => {
          ok('完成');
        });
        ws.on('error', err => {
          no(err);
        });
      });

      let msg;
      try {
        msg = await storageImg;
      } catch (error) {
        msg = '存储失败:' + error;
      }
      // yzyconsole.log('存入信息:', msg);

      // 压缩图片
      // images('app/public/admin/temporary/' + imgName).save('app/public/admin/articleBgi/' + ysName, { quality: 20 });// 压缩比50
      try {
        tinify.fromFile('app/public/admin/temporary/' + imgName).toFile('app/public/admin/articleBgi/' + ysName);
      } catch (error) {
        // yzyconsole.log(error);
      }


      // 删除临时文件 删除所有的文件(将所有文件夹置空)
      // const emptyDir = function(fileUrl) {
      //   const files = fs.readdirSync(fileUrl);// 读取该文件夹
      //   files.forEach(function(file) {
      //     const stats = fs.statSync(fileUrl + '/' + file);
      //     if (stats.isDirectory()) {
      //       emptyDir(fileUrl + '/' + file);
      //     } else {
      //       fs.unlinkSync(fileUrl + '/' + file);
      //       console.log('删除文件' + fileUrl + '/' + file + '成功');
      //     }
      //   });
      // };
      // emptyDir('app/public/admin/temporary');
    } else if (!tmpArticle.img) {
      tmpArticle.img = null;
    }


    // 删除原来的内容图片
    const getOriginalContentImgSql = 'SELECT article.contentImg as contentImg ' +
      'FROM article ' +
      'WHERE id=' + tmpArticle.id;
    let getOriginalContentImgRes = (await this.app.mysql.query(getOriginalContentImgSql))[0].contentImg;
    // yzyconsole.log('getOriginalContentImgRes', getOriginalContentImgRes);
    if (getOriginalContentImgRes) {
      getOriginalContentImgRes = getOriginalContentImgRes.split(',');
      const contentImgList = tmpArticle.contentImg.split(',');
      // yzyconsole.log('getOriginalContentImgRes', getOriginalContentImgRes, 'contentImgList', contentImgList);

      getOriginalContentImgRes.forEach(i => {
        if (i && !contentImgList.includes(i)) {
          const imgName1 = i.split('/').pop();
          let imgName2 = imgName1.split('.');
          imgName2[0] = imgName2[0] + 'ys.';
          imgName2 = imgName2.join('');
          try {
            fs.unlinkSync('app/public/admin/articleContentImg/' + imgName1);
            fs.unlinkSync('app/public/admin/articleContentImg/' + imgName2);
          } catch (error) {
            // yzyconsole.log('err', error);
          }
        }

      });
    }
    // 处理内容图片
    if (tmpArticle.contentImg) {
      // TODO:其实还有个判断:当前上传的img有没有重复上传而temporary里已经被删了
      tmpArticle.contentImg.split(',').forEach(async i => {
        const imgName = i.split('/').pop();
        let ysName = imgName.split('.');
        ysName[0] = ysName[0] + 'ys.';
        ysName = ysName.join('');

        const storageImg = new Promise((ok, no) => {
          const rs = fs.createReadStream('app/public/admin/temporary/' + imgName);
          const ws = fs.createWriteStream('app/public/admin/articleContentImg/' + imgName);
          rs.pipe(ws);

          // 拷贝一个源文件为ys名,避免压缩失败没有ys图
          // const wsys = fs.createWriteStream('app/public/admin/articleContentImg/' + ysName);
          // rs.pipe(wsys);

          ws.on('finish', () => {
            ok('完成');
          });
          ws.on('error', err => {
            no(err);
          });
        });

        let msg;
        try {
          msg = await storageImg;
        } catch (error) {
          msg = '存储失败:' + error;
        }
        // yzyconsole.log('存入信息:', msg);

        // 压缩图片
        // images('app/public/admin/temporary/' + imgName).save('app/public/admin/articleContentImg/' + ysName, { quality: 20 });// 压缩比50
        try {
          tinify.fromFile('app/public/admin/temporary/' + imgName).toFile('app/public/admin/articleContentImg/' + ysName);
        } catch (error) {
          // yzyconsole.log(error);
        }


        // 删除临时文件 删除所有的文件(将所有文件夹置空)
        // const emptyDir = function(fileUrl) {
        //   const files = fs.readdirSync(fileUrl);// 读取该文件夹
        //   files.forEach(function(file) {
        //     const stats = fs.statSync(fileUrl + '/' + file);
        //     if (stats.isDirectory()) {
        //       emptyDir(fileUrl + '/' + file);
        //     } else {
        //       fs.unlinkSync(fileUrl + '/' + file);
        //       console.log('删除文件' + fileUrl + '/' + file + '成功');
        //     }
        //   });
        // };
        // emptyDir('app/public/admin/temporary');

      });
    } else {
      tmpArticle.contentImg = null;
    }


    // 向数据库插入数据
    const result = await this.app.mysql.update('article', tmpArticle);
    // 判断是否成功,插入成功返回的row数
    const insertSuccess = result.affectedRows === 1;
    // 返回给前端保存信息
    this.ctx.body = {
      isScuccess: insertSuccess,
    };
  }

  //   获取技术类型
  async getSkillType() {
    const res = await this.app.mysql.select('skillType');
    this.ctx.body = res;
  }

  //   获取留言
  async guestbook() {
    const sql = 'select * from board order by updateTime';
    const res = await this.app.mysql.query(sql);
    this.ctx.body = res;
  }
  //   删除留言
  async deleteGuestbook() {
    const id = this.ctx.params.id;
    const res = await this.app.mysql.delete('board', { id });
    this.ctx.body = { data: res };
  }
  //   获取生活
  async liveList() {
    const sql = 'select * from livelist order by updateTime';
    const res = await this.app.mysql.query(sql);
    this.ctx.body = res;
  }
  //   删除生活
  async deleteLive() {
    const id = this.ctx.params.id;

    // 删除原来的图片
    const getOriginalImgSql = 'SELECT livelist.imgs as imgs ' +
      'FROM livelist ' +
      'WHERE id=' + id;
    const getOriginalImgRes = (await this.app.mysql.query(getOriginalImgSql))[0].imgs;
    if (getOriginalImgRes) {
      getOriginalImgRes.split(',').forEach(item => {
        // yzyconsole.log('getOriginalImgRes', item);
        const imgName1 = item.split('/').pop();
        let imgName2 = imgName1.split('.');
        imgName2[0] = imgName2[0] + 'ys.';
        imgName2 = imgName2.join('');
        try {
          fs.unlinkSync('app/public/admin/liveImg/' + imgName1);
          fs.unlinkSync('app/public/admin/liveImg/' + imgName2);
        } catch (error) {
          // yzyconsole.log('err', error);
        }
      });
    }

    const res = await this.app.mysql.delete('livelist', { id });
    this.ctx.body = { data: res };
  }


  //   新增生活
  async addLive() {
    //   获得前端传过来的数据
    const tmpArticle = this.ctx.request.body;


    // 处理图片
    if (tmpArticle.imgs) {
      // 存操作函数
      const storageImg = (imgName, ysName) => (new Promise((ok, no) => {
        const rs = fs.createReadStream('app/public/admin/temporary/' + imgName);
        const ws = fs.createWriteStream('app/public/admin/liveImg/' + imgName);
        rs.pipe(ws);

        // 拷贝一个源文件为ys名,避免压缩失败没有ys图
        // const wsys = fs.createWriteStream('app/public/admin/liveImg/' + ysName);
        // rs.pipe(wsys);

        ws.on('finish', () => {
          ok('完成');
        });
        ws.on('error', err => {
          no(err);
        });
        // 压缩图片
        // images('app/public/admin/temporary/' + imgName).save('app/public/admin/liveImg/' + ysName, { quality: 20 });// 压缩比50
        try {
          tinify.fromFile('app/public/admin/temporary/' + imgName).toFile('app/public/admin/liveImg/' + ysName);
        } catch (error) {
          // yzyconsole.log(error);
        }

      }));

      tmpArticle.imgs.split(',').forEach(async img => {
        // eslint-disable-next-line prefer-const
        let imgName = img.split('/').pop();
        let ysName = imgName.split('.');
        ysName[0] = ysName[0] + 'ys.';
        ysName = ysName.join('');

        let msg;
        try {
          msg = await storageImg(imgName, ysName);
        } catch (error) {
          msg = '存储失败:' + error;
        }
        // yzyconsole.log('存入信息:', msg);
      });

      // 删除临时文件 删除所有的文件(将所有文件夹置空)
      const emptyDir = function(fileUrl) {
        const files = fs.readdirSync(fileUrl);// 读取该文件夹
        files.forEach(function(file) {
          const stats = fs.statSync(fileUrl + '/' + file);
          if (stats.isDirectory()) {
            emptyDir(fileUrl + '/' + file);
          } else {
            fs.unlinkSync(fileUrl + '/' + file);
            // yzyconsole.log('删除文件' + fileUrl + '/' + file + '成功');
          }
        });
      };
      // emptyDir('app/public/admin/temporary');
    }


    // 向数据库插入数据
    const result = await this.app.mysql.insert('livelist', tmpArticle);
    // 判断是否成功,插入成功返回的row数
    const insertSuccess = result.affectedRows === 1;
    // 保存返回修改的id
    const insertId = result.insertId;
    // 返回给前端保存信息
    this.ctx.body = {
      isScuccess: insertSuccess,
      insertId,
    };
  }

  // 登陆操作
  async login() {
    //   获得前端传过来的数据
    const loginInfo = this.ctx.request.body;
    // console.log('loginInfo', loginInfo);
    // 查询数据中对应账号密码是否匹配
    // const sql = 'SELECT account.id as id ,' +
    // 'account.account as account ,' +
    // 'account.password as password ' +
    // 'FROM account ' +
    // 'WHERE account=' + loginInfo.account;
    // const sqlInfo = await this.app.mysql.query(sql);
    /* TODO:上面where除了id都没用样,暂时查全部 */
    const sqlInfo = (await this.app.mysql.select('account')).find(i => i.account === loginInfo.account);
    const res = {};
    if (sqlInfo) {
      // 有账号
      // console.log('数据库中信息', sqlInfo, '密码', sqlInfo.password);
      if (sqlInfo.password === loginInfo.password) {
        // 密码相等
        // 弄一个时间戳,作为登陆状态并前后端验证(可以用来做前端的token其实有了后端session验证也可以不用前端token,TODO:但要注意的是session和传给前端的openId没有关联的,删掉前端的openId也不会影响session,因为session是后端设置自动给前端相当于cookie, )
        const openId = new Date().getTime();
        //   将登陆状态存入ctx.session中
        this.ctx.session.openId = { openId };// TODO:加密出问题了,用不了cookie session??crypto.createCipher is deprecated
        res.openId = openId;
        res.isLogin = true;
        res.msg = '登陆成功';
        res.account = loginInfo.account;
      } else {
        res.isLogin = false;
        res.msg = '密码错误';
      }
    } else {
      res.isLogin = false;
      res.msg = '该账号没有注册';
    }
    this.ctx.body = res;
  }

  // 登出
  async loginout() {
    this.ctx.session.openId = { openId: null };
    this.ctx.body = {
      msg: '登出成功',
      isLogin: false,
    };
  }

  // 修改密码
  async alertPassword() {
    //   获得前端传过来的数据
    const newPassInfo = await this.ctx.request.body;
    /* TODO:where除了id都没用样,暂时查全部 */
    const sqlInfo = (await this.app.mysql.select('account')).find(i => i.account === newPassInfo.account);
    const res = {};
    if (sqlInfo) {
      // 有账号

      if (newPassInfo.originalPassword === sqlInfo.password) {
        // 密码相同
        sqlInfo.password = newPassInfo.password;
        // 向数据库插入数据
        const result = await this.app.mysql.update('account', sqlInfo);
        // 判断是否成功,插入成功返回的row数
        const insertSuccess = result.affectedRows === 1;

        if (insertSuccess) {
          this.ctx.session.openId = { openId: null };
          res.msg = '修改成功';
          res.isLogin = false;
        } else {
          res.msg = '插入数据库失败';
          res.isLogin = true;
        }

      } else {
        // 原密码不匹配
        res.msg = '原密码不匹配';
        res.isLogin = true;
      }

    } else {
      res.msg = '没有此账号';
      res.isLogin = true;
    }

    this.ctx.body = res;
  }

  // // 获取图片数据测试
  // async upArticleBgi() {
  //   //   获得前端传过来的文件
  //   const parts = this.ctx.request.files;
  //   // 保存的图片名称
  //   const wsName = new Date().getTime() + path.extname(parts[0].filename);
  //   // 压缩图片的名称
  //   const ysName = new Date().getTime() + 'ys' + path.extname(parts[0].filename);
  //   // 流式写入文件
  //   await new Promise((ok, no) => {
  //     const rs = fs.createReadStream(parts[0].filepath);
  //     const ws = fs.createWriteStream('app/public/admin/articleBgi/' + wsName);
  //     rs.pipe(ws);
  //     ws.on('finish', () => { // 暴露也没有用,这样好免得出错
  //       ok('完成');
  //     });
  //     ws.on('error', err => {
  //       no(err);
  //     });

  //     // 压缩图片
  //     images(parts[0].filepath).save('app/public/admin/articleBgi/' + ysName, { quality: 50 });// 压缩比50
  //   });
  //   // // 删除临时文件
  //   fs.unlink(parts[0].filepath, err => {
  //     if (err) throw err;
  //   });
  //   // 返回给前端名字,前端可拿这个地址访问图片静态资源
  //   this.ctx.body = '/public/admin/articleBgi/' + wsName;
  //   // 关闭数据连接??
  //   this.ctx.cleanupRequestFiles();
  // }

  // 将上传图片存到暂存文件夹temporary(要不然上传了图片又没点保存图片就一直在静态文件夹中,做完这个后再去文章保存接口把暂存文件夹中的放到静态文件中)
  async upImgToTemporary() {
    //   获得前端传过来的文件
    const parts = this.ctx.request.files;
    const res = [];

    // 去掉特殊字符函数
    const excludeSpecial = function(s) {
      // 去掉转义字符
      s = s.replace(/[\'\"\\\/\b\f\n\r\t]/g, '');
      // 去掉特殊字符
      s = s.replace(/[\@\#\$\%\^\&\*\(\)\{\}\:\"\L\<\>\?\[\]]/);
      return s;
    };

    parts.forEach(async item => {

      // 保存的图片名称
      // const wsName = new Date().getTime() + path.extname(item.filename);
      const wsName = '(' + new Date().getTime() + ')' + excludeSpecial(item.filename);
      // 压缩图片的名称
      // const ysName = new Date().getTime() + 'ys' + path.extname(item.filename);
      // 流式写入temporary临时文件
      await new Promise((ok, no) => {
        const rs = fs.createReadStream(item.filepath);
        const ws = fs.createWriteStream('app/public/admin/temporary/' + wsName);
        rs.pipe(ws);
        ws.on('finish', () => { // 暴露也没有用,这样好免得出错
          ok('完成');
        });
        ws.on('error', err => {
          no(err);
        });

        // 压缩图片
        // images(item.filepath).save('app/public/admin/articleBgi/' + ysName, { quality: 50 });// 压缩比50

        // // 删除服务器路径临时文件
        fs.unlink(parts[0].filepath, err => {
          if (err) throw err;
        });

        res.push({
          url: '/public/admin/temporary/' + wsName,
          wsName,
        });
      });

    });
    // 返回给前端名字,前端可拿这个地址访问图片静态资源
    this.ctx.body = res;
    // 关闭数据连接??
    this.ctx.cleanupRequestFiles();
  }

  // 压缩BGI给手显示(无实际请求作用)
  async yasuoBGI() {
    [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ].forEach(item => {
    // 压缩图片
      // images('app/public/blog/BGI/' + item + '.jpg').save('app/public/blog/BGI/' + item + 'ys.jpg', { quality: 50 });// 压缩比50
      try {
        tinify.fromFile('app/public/blog/BGI/' + item + '.jpg').toFile('app/public/blog/BGI/' + item + 'ys.jpg');
      } catch (error) {
        // yzyconsole.log(error);
      }

    });

    this.ctx.body = '压缩了';
  }


}

module.exports = AdminController;
